#pragma once

#include "IState.h"

/**
* This class represents the Initial state
*/
class State0 : public IState
{
    static IState* state;

public:
    State0(void);
    ~State0(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};


/**
* This class represents the sign state
*/
class State1 : public IState
{
    static IState* state;

public:
    State1(void);
    ~State1(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};


/**
* This class represents the special sign order <!> (first) state
*/
class State11 : public IState
{
    static IState* state;

public:
    State11(void);
    ~State11(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};


/**
* This class represents the special sign order <!> (second) state
*/
class State12 : public IState
{
    static IState* state;

public:
    State12(void);
    ~State12(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};


/**
* This class represents the integer state
*/
class State2 : public IState
{
    static IState* state;

public:
    State2(void);
    ~State2(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};


/**
* This class represents the letter state
*/
class State3 : public IState
{
    static IState* state;

public:
    State3(void);
    ~State3(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};


/**
* This class represents the special sign order / * ... * / (first) state
*/
class State41 : public IState
{
    static IState* state;

public:
    State41(void);
    ~State41(void);
    
    static IState* makeState();
    void read(char c, IAutomat* automat);
};
